package com.huanletao.guava.str;

import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class demo01 {

    private static final Joiner joiner = Joiner.on(",").skipNulls();

    private static final Splitter splitter = Splitter.on(",").trimResults().omitEmptyStrings();

    public static void main(String[] args) {
//        String join = joiner.join(Lists.newArrayList("a", null, "b"));
//        System.out.println("join = " + join);
//        for (String s : splitter.split("a, ,b,,")) {
//            System.out.println("s = " + s);
//        }



        // 如不清楚jdk自带的Arrays.asList() 和list.add有什么区别 建议别用Arrays.asList()
        // 谷歌的Lists.newArrayList 和list add基本是等效的 额外判断了初始大小 提高了效率
        ArrayList<String> list = Lists.newArrayList("1", "2", null, "", "3");

        // 只会跳过null 不会跳过空串
        String join = Joiner.on("_").skipNulls().join(list);
        System.out.println(join);

        // 给null设置默认值
        String str = Joiner.on("|").useForNull("给null赋予的默认值").join(list);
        System.out.println(str);

        String splitStr = "aa|bb|cc|dd|ee||ff";
        // 这里则是跳过分割符之间的空串了 (ee|和|ff之间那个空串)  因为已经在String里面了 是不可能存在null的
        List<String> strings = Splitter.on("|").omitEmptyStrings().splitToList(splitStr);

        // 转成Stream流 配合stream流的各种操作 非常好用!  omitEmptyStrings 跳过空值
        Stream<String> stringStream = Splitter.on("|").omitEmptyStrings().splitToStream(splitStr);

        String space = "aa| |bb|cc";
        // 去除空格 注意空格去除后就是空串了 如果需要去除空串 链式结合omitEmptyStrings
        List<String> trims = Splitter.on("|").trimResults().splitToList(space);



    }
}
